#include<iostream>
using namespace std;
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
//class Solution {
//public:
//    void printfront(TreeNode* root,size_t& sum,size_t cur)
//    {
//        if(root==nullptr)
//            return;
//        if(root->left==root->right&&root->left==nullptr)
//        {
//            cur=cur+root->val;
//            sum=sum+cur;
//        }
//        cur=(cur+root->val)*10;
//        printfront(root->left,sum,cur);
//        printfront(root->right,sum,cur);
//    }
//    int sumNumbers(TreeNode* root) 
//    {
//        if(root==nullptr)
//            return 0;
//        size_t sum=0;
//        size_t cur=0;
//        printfront(root,sum,cur);
//        return sum;
//    }
//};
//class Solution {
//public:
//    void printfront(TreeNode* root,string s,vector<string>& v)
//    {
//        if(root==nullptr)
//            return;
//        s+=to_string(root->val);
//        if(!(root->left==root->right&&root->left==nullptr))
//            s+="->";
//        if(root->left==root->right&&root->left==nullptr)
//            v.push_back(s);
//        printfront(root->left,s,v);
//        printfront(root->right,s,v);
//    }
//    vector<string> binaryTreePaths(TreeNode* root) 
//    {
//        vector<string> v;
//        if(root==nullptr)
//            return v;
//        string s;
//        printfront(root,s,v);
//        return v;
//    }
//};
//class Solution {
//public:
//    void front(TreeNode* root,vector<TreeNode*>& v)
//    {
//        if(root==nullptr)
//            return;
//        v.push_back(root);
//        front(root->left,v);
//        front(root->right,v);
//    }
//    void flatten(TreeNode* root) 
//    {
//        vector<TreeNode*> v;
//        front(root,v);
//        for(size_t i=0;i+1<v.size();i++)
//        {
//            v[i]->left=nullptr;
//            v[i]->right=v[i+1];
//        }
//    }
//};
